/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.fonafe.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.activation.MimeType;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.RequestAware;
import org.springframework.beans.factory.annotation.Autowired;
import pe.gob.fonafe.domain.ConsultaBean;
import pe.gob.fonafe.domain.FilesConsultaBean;
import pe.gob.fonafe.domain.UsuarioBean;
import pe.gob.fonafe.service.ConsultaRecService;


/**
 *
 * @author Irving
 */
public class ConsultaAction extends ActionSupport implements Preparable,RequestAware{
    
    private Map<String,Object> request;
    private List<ConsultaBean> listConsultaReclamos;
    private List<ConsultaBean> listUsuXConsultaReclamos;
    private List<FilesConsultaBean> listFilesConsulta;
    private UsuarioBean usuarioBean;
    private static final Logger logger = Logger.getLogger(ConsultaAction.class);
    private InputStream inputStream;
    
    @Autowired
    private ConsultaRecService consultaRecService;
        
    private String tipo_consul_rec;
    private String mensajeOk;
    private String mensajeFail;
    private String idBien;
    private String idSubasta;
    private String idDetalle;
    private String mimeType;
    private String titulo;
    
    public String buscarConsultaReclamo()
    {
        String resultado="";
        try{
            
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            setUsuarioBean((UsuarioBean)sesion.getAttribute("usuarioLogin"));
                        
            logger.info("consulta reclamo tipo ...."+ getTipo_consul_rec()+" "+usuarioBean.getTb_Empresa_id_empresa()+" "+getTipo_consul_rec());
            listConsultaReclamos=consultaRecService.buscarConsultaReclamo(usuarioBean.getTb_Empresa_id_empresa(), getTipo_consul_rec());
            setMensajeOk("Se encontraron " + getListConsultaReclamos().size() + " registros");
            
            resultado = SUCCESS;
        }catch (Exception ex){
            ex.printStackTrace();
            resultado = ERROR;
        }
        return resultado;
    }
    
    
    public String detalleBien()
    {
      String resultado="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            setUsuarioBean((UsuarioBean)sesion.getAttribute("usuarioLogin"));
            logger.info("detalleBien [" +getTipo_consul_rec()+" "+idBien+" "+idSubasta+"]");
            listUsuXConsultaReclamos=consultaRecService.buscarUsuariosBienReclamo(getTipo_consul_rec(),usuarioBean.getId_usuario(),idBien,idSubasta);
            listFilesConsulta=consultaRecService.buscarFilesConsultaReclamo(idSubasta,idBien);
            sesion.setAttribute("listFilesConsulta", listFilesConsulta);
            setMensajeOk("Se encontraron " + getListConsultaReclamos().size() + " registros");
            logger.info("FILES [" +listFilesConsulta.size()+ "]");
            resultado = SUCCESS;
        }catch (Exception ex){
            ex.printStackTrace();
            resultado = ERROR;
        }
        return resultado;
    }
    
    public String descargaDoc()
    {
       String resultado="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            List<FilesConsultaBean> listInmu = (List<FilesConsultaBean>)sesion.getAttribute("listFilesConsulta");
            if(!idDetalle.equalsIgnoreCase("")){
                byte[] btFile = null;
                for(FilesConsultaBean bean : listInmu){
                    if((bean.getId_detalle()+"").equalsIgnoreCase(idDetalle)){
                        btFile = bean.getArchivo();
                        mimeType = bean.getExtensionArchivo();
                        titulo = bean.getNombreArchivo();
                        break;
                    }
                }
                if(btFile != null){
                 inputStream =new ByteArrayInputStream(btFile);
                 //mimeType = "image/gif";
                 resultado = SUCCESS;
                }
            }
        }catch(Exception ex){
            resultado = ERROR;
            ex.printStackTrace();
        }
        return resultado;
    }
    
    
    public void prepare() throws Exception {
        this.listConsultaReclamos=new ArrayList<ConsultaBean>();
        this.setListUsuXConsultaReclamos(new ArrayList<ConsultaBean>());
        this.usuarioBean=new UsuarioBean();
        this.setListFilesConsulta(new ArrayList<FilesConsultaBean>());
        this.tipo_consul_rec="Consulta";
    }
    
     public void setRequest(Map<String, Object> request) {
        this.request = request;
    }

    /**
     * @return the listConsultaReclamos
     */
    public List<ConsultaBean> getListConsultaReclamos() {
        return listConsultaReclamos;
    }

    /**
     * @param listConsultaReclamos the listConsultaReclamos to set
     */
    public void setListConsultaReclamos(List<ConsultaBean> listConsultaReclamos) {
        this.listConsultaReclamos = listConsultaReclamos;
    }

    /**
     * @return the usuarioBean
     */
    public UsuarioBean getUsuarioBean() {
        return usuarioBean;
    }

    /**
     * @param usuarioBean the usuarioBean to set
     */
    public void setUsuarioBean(UsuarioBean usuarioBean) {
        this.usuarioBean = usuarioBean;
    }

    

    /**
     * @return the mensajeOk
     */
    public String getMensajeOk() {
        return mensajeOk;
    }

    /**
     * @param mensajeOk the mensajeOk to set
     */
    public void setMensajeOk(String mensajeOk) {
        this.mensajeOk = mensajeOk;
    }

    /**
     * @return the mensajeFail
     */
    public String getMensajeFail() {
        return mensajeFail;
    }

    /**
     * @param mensajeFail the mensajeFail to set
     */
    public void setMensajeFail(String mensajeFail) {
        this.mensajeFail = mensajeFail;
    }

    /**
     * @return the idBien
     */
    public String getIdBien() {
        return idBien;
    }

    /**
     * @param idBien the idBien to set
     */
    public void setIdBien(String idBien) {
        this.idBien = idBien;
    }

    /**
     * @return the tipo_consul_rec
     */
    public String getTipo_consul_rec() {
        return tipo_consul_rec;
    }

    /**
     * @param tipo_consul_rec the tipo_consul_rec to set
     */
    public void setTipo_consul_rec(String tipo_consul_rec) {
        this.tipo_consul_rec = tipo_consul_rec;
    }

    /**
     * @return the listUsuXConsultaReclamos
     */
    public List<ConsultaBean> getListUsuXConsultaReclamos() {
        return listUsuXConsultaReclamos;
    }

    /**
     * @param listUsuXConsultaReclamos the listUsuXConsultaReclamos to set
     */
    public void setListUsuXConsultaReclamos(List<ConsultaBean> listUsuXConsultaReclamos) {
        this.listUsuXConsultaReclamos = listUsuXConsultaReclamos;
    }

    /**
     * @return the idSubasta
     */
    public String getIdSubasta() {
        return idSubasta;
    }

    /**
     * @param idSubasta the idSubasta to set
     */
    public void setIdSubasta(String idSubasta) {
        this.idSubasta = idSubasta;
    }

    /**
     * @return the listFilesConsulta
     */
    public List<FilesConsultaBean> getListFilesConsulta() {
        return listFilesConsulta;
    }

    /**
     * @param listFilesConsulta the listFilesConsulta to set
     */
    public void setListFilesConsulta(List<FilesConsultaBean> listFilesConsulta) {
        this.listFilesConsulta = listFilesConsulta;
    }

    /**
     * @return the idDetalle
     */
    public String getIdDetalle() {
        return idDetalle;
    }

    /**
     * @param idDetalle the idDetalle to set
     */
    public void setIdDetalle(String idDetalle) {
        this.idDetalle = idDetalle;
    }

    /**
     * @return the inputStream
     */
    public InputStream getInputStream() {
        return inputStream;
    }

    /**
     * @param inputStream the inputStream to set
     */
    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    /**
     * @return the mimeType
     */
    public String getMimeType() {
        return mimeType;
    }

    /**
     * @param mimeType the mimeType to set
     */
    public void setMimeType(String mimeType) {
        this.mimeType = mimeType;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
       

    
}
